package com.cloudkinto.bo.order.makeshop.getOrder;

import com.cloudkinto.bo.order.makeshop.SortOrder;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @author long
 * @Description 查询订单
 * @Date 2025/4/25 10:39
 */
@Data
public class SearchOrderRequest {

    /**
     * 查询开始时间
     * YYYYMMDDhhmmss形式
     */
    @NotNull(message = "startOrderDate不能为空")
    private String startOrderDate;

    /**
     * 查询结束时间
     * YYYYMMDDhhmmss形式
     */
    @NotNull(message = "endOrderDate不能为空")
    private String endOrderDate;

    /**
     * 订单号
     */
    private String displayOrderNumber;

    /**
     * 订单号列表
     * 100件以下
     */
    private List<String> displayOrderNumberList;

    /**
     * 会员ID
     */
    private String memberId;

    /**
     * 付款方式代码
     */
    private String payMethodCode;

    /**
     * 外部结算ID
     */
    @Deprecated
    private String paymentNumber;

    /**
     * 结算状态
     */
    @Deprecated
    private String payMethodStatus;

    /**
     * 收款日期开始
     * YYYYMMDDhhmmss形式
     */
    private String startPaymentDate;

    /**
     * 收款日期结束
     * YYYYMMDDhhmmss形式
     */
    private String endPaymentDate;

    /**
     * 订购者姓名
     */
    private String senderName;

    /**
     * 收件人名
     */
    private String receiverName;

    /**
     * 配送状态
     * N：未処理
     * Y：配送完了
     * C：キャンセル
     * R：返送
     */
    private String deliveryStatus;

    /**
     * 配送单据编号
     */
    private String slipNumber;

    /**
     * 配送完成日期开始
     * YYYYMMDDhhmmss形式
     */
    private String startDeliveryDate;

    /**
     * 配送完成日期结束
     * YYYYMMDDhhmmss形式
     */
    private String endDeliveryDate;

    /**
     * 配送希望日开始
     * YYYY-MM-DD形式
     */
    private String startDesiredDeliveryDate;

    /**
     * 配送希望日结束
     * YYYY-MM-DD形式
     */
    private String endDesiredDeliveryDate;

    /**
     * 配送希望時間帯
     * 佐川急便5つの時間帯
     * 指定なし/午前中/12:00-14:00/14:00-16:00/16:00-18:00/18:00-21:00
     * <p>
     * 佐川急便6つの時間帯
     * 指定なし/午前中/12:00-14:00/14:00-16:00/16:00-18:00/18:00-20:00/19:00-21:00
     * <p>
     * ゆうパック用
     * 指定なし/午前中/12:00-14:00/14:00-16:00/16:00-18:00/18:00-20:00/19:00-21:00/20:00-21:00
     * <p>
     * ヤマト運輸用
     * 指定なし/午前中/14:00-16:00/16:00-18:00/18:00-20:00/19:00-21:00
     * <p>
     * 西濃運輸用
     * 指定なし/午前中/午後
     */
    private String desiredDeliveryTimezone;

    /**
     * 预计发货日期
     * YYYY-MM-DD形式
     */
    private String startEstimatedShipmentDate;

    /**
     * 预计发货日期
     * YYYY-MM-DD形式
     */
    private String endEstimatedShipmentDate;

    /**
     * 订单更新日期
     * YYYYMMDDhhmmss形式
     * ※検索範囲：指定日以上
     */
    private String modifiedFrom;

    /**
     * 订单更新日期
     * YYYYMMDDhhmmss形式
     * ※検索範囲：指定日以下
     */
    private String modifiedTo;

    /**
     * 是否删除已取消的订单
     * true: 排除
     * false: 不排除
     * ※指定なしの場合はfalse
     */
    private Boolean excludeCanceled;

    /**
     * 排序顺序
     * 默认按升序对订单编号进行排序
     * ASC
     * DESC
     */
    private SortOrder sortOrder;

    /**
     * 页码 必填
     */
    @NotNull(message = "page不能为空")
    private int page;

    /**
     * 每页数量 最大1000 必填
     */
    @NotNull(message = "limit不能为空")
    private int limit;
}
